using System;
using System.Collections.Generic;

namespace WMSSystem.Application.Contracts.Workflow.Dto
{
    /// <summary>
    /// 工作流实例DTO
    /// </summary>
    public class WorkflowInstanceDto
    {
        /// <summary>
        /// ID
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 工作流实例ID
        /// </summary>
        public string WorkflowInstanceId { get; set; }

        /// <summary>
        /// 工作流定义ID
        /// </summary>
        public string WorkflowDefinitionId { get; set; }

        /// <summary>
        /// 业务类型
        /// </summary>
        public string BusinessType { get; set; }

        /// <summary>
        /// 业务ID
        /// </summary>
        public Guid BusinessId { get; set; }

        /// <summary>
        /// 当前状态
        /// </summary>
        public string Status { get; set; }

        /// <summary>
        /// 当前步骤
        /// </summary>
        public string CurrentStep { get; set; }

        /// <summary>
        /// 当前审批人ID
        /// </summary>
        public Guid? CurrentApproverId { get; set; }

        /// <summary>
        /// 当前审批人姓名
        /// </summary>
        public string CurrentApproverName { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreationTime { get; set; }

        /// <summary>
        /// 审批记录
        /// </summary>
        public List<WorkflowApprovalRecordDto> ApprovalRecords { get; set; } = new List<WorkflowApprovalRecordDto>();
    }

    /// <summary>
    /// 工作流审批记录DTO
    /// </summary>
    public class WorkflowApprovalRecordDto
    {
        /// <summary>
        /// 步骤名称
        /// </summary>
        public string StepName { get; set; }

        /// <summary>
        /// 审批人姓名
        /// </summary>
        public string ApproverName { get; set; }

        /// <summary>
        /// 审批结果
        /// </summary>
        public string ApprovalResult { get; set; }

        /// <summary>
        /// 审批意见
        /// </summary>
        public string ApprovalComment { get; set; }

        /// <summary>
        /// 审批时间
        /// </summary>
        public DateTime ApprovalTime { get; set; }
    }
} 